<?php
/**
 * Smarty Internal Plugin Compile Append
 *
 * Compiles the {append} tag
 *
 * @package Smarty
 * @subpackage Compiler
 * @author Uwe Tews
 */

/**
 * Smarty Internal Plugin Compile Append Class
 *
 * @package Smarty
 * @subpackage Compiler
 */
class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign {
	
	/**
	 * Compiles code for the {append} tag
	 *
	 * @param $args array
	 *       	 array with attributes from parser
	 * @param $compiler object
	 *       	 compiler object
	 * @param $parameter array
	 *       	 array with compilation parameter
	 * @return string compiled code
	 */
	public function compile($args, $compiler, $parameter) {
		// the following must be assigned at runtime because it will be
		// overwritten in parent class
		$this->required_attributes = array ('var', 'value' );
		$this->shorttag_order = array ('var', 'value' );
		$this->optional_attributes = array ('scope', 'index' );
		// check and get attributes
		$_attr = $this->getAttributes ( $compiler, $args );
		// map to compile assign attributes
		if (isset ( $_attr ['index'] )) {
			$_params ['smarty_internal_index'] = '[' . $_attr ['index'] . ']';
			unset ( $_attr ['index'] );
		} else {
			$_params ['smarty_internal_index'] = '[]';
		}
		$_new_attr = array ();
		foreach ( $_attr as $key => $value ) {
			$_new_attr [] = array ($key => $value );
		}
		// call compile assign
		return parent::compile ( $_new_attr, $compiler, $_params );
	}

}

?>